package com.zeta.plan.service;

import com.zeta.plan.model.dto.UserDTO;
import com.zeta.plan.model.entity.UserDO;

public interface UserService {
    /**
     * 注册
     * @param userDO
     * @return
     */
    Long addUser(UserDO userDO);

    /**
     * 登录
     * @param username
     * @param password
     * @return
     */
    UserDO findUserByUsernameAndPassword(String username, String password);

    /**
     * 根据用户名删除用户
     * @param username
     */
    void deleteUserByUsername(String username);

    /**
     * 根据用户名获取secret
     * @param username
     * @return
     */
    String findSecretByUsername(String username);

    /**
     * 根据用户名查询账户禁用状态
     * @param username
     * @return
     */
    boolean findEnabledByUsername(String username);

    /**
     * 根据用户名禁用账户
     * @param username
     * @return
     */
    boolean updateEnabledByUsername(String username, boolean enabled);

    /**
     * 根据用户id查询用户
     * @param id
     * @return
     */
    UserDO findUserById(Long id);

    /**
     * 根据用户查询salt
     * @param username
     * @return
     */
    String findSaltByUsername(String username);

    /**
     * 通过id更新secret
     * @param id
     * @param secret
     */
    boolean updateSecretByID(Long id, String secret);

    /**
     * 根据用户名和密码更新密码
     * @param username
     * @param password
     * @param newPassword
     * @return
     */
    boolean updatePasswordByUsernameAndPassword(String username, String password, String newPassword);

    /**
     * 更新用户信息
     * @param userDTO
     * @return
     */
    boolean updateUserInfoById(UserDTO userDTO);
}
